直指MIPS交叉编译环境 |
您所在的位置:网站首页 › 路由器 arm mips › 直指MIPS交叉编译环境 |
#什么是MIPS交叉编译环境 MIPS是一个RISC的处理器体系结构,与之类似的还有x86,ARM等,ARM在移动平台,因为在路由器领域基本还是以MIPS架构为主,而诸如树莓派/单片机大部分均为ARM架构。因为最近一直在研究路由器安全领域本文记录下MIPS交叉编译环境的几个坑。 操作系统:Ubuntu16.04 作为RISC精简指令集的代表,MIPS处理器曾经比ARM还要火,比ARM更早支持64位,也是安卓系统支持的三大指令集之一,只不过现在MIPS指令集在移动、嵌入式领域影响比ARM小。 #历史悠久的MIPS 网上很多环境搭建的资料太久了,最早的MIPS交叉编译环境可追溯到2013年,最迟的交叉编译环境构建文章停留在2017年,阿里先知社区,Freebuf等文章中提到的部分库和涉及的安装流程已经逐步失效。 #安装buildroot sudo apt-get install curses-devel sudo apt-get install libncurs* sudo apt-get update然后下载 git clone https://github.com/buildroot/buildroot.git(GitHub下载文件较慢,因此这里我们使用码云上公开的库。下载速度99+) git clone https://gitee.com/cc-key/buildroot进行编译配置 cd buildroot make clean make menuconfig不出意外的话,就来到了buildroot的编译配置界面,这里也是最为重要的部分。 target option中设置,第一个是询问你设置大端序还是小端序,这里我打算两个端序都安装,所以这里任意选,第二个设置成generic mips32即可。 这里补充一点关于大端序小端序的知识。 《加密与解密(第四版)》中详细介绍了有关大端序,小端序。这里我贴部分图 这里我选择设置的图如下: 然后是toolchain,这里我们需要选择比我们系统内核版本低的进行配置。 Target Arch选择MIPS(little endian)小端序 uname -r查看本地Linux的内核版本 选择较低系统内核配置即可。 然后make开始编译(此处略去五小时) 由于我们选择的是小端,所以我们看到misp开头的都是小端序编译的程序。 由于工具都在这些路径之下,我们在其他路径下编译很不方便,所以需要设置环境变量,使其在外部可完全被调用。这样子MIPS交叉编译环境就算是在本地搭建完成。 我们再来看看是否顺利的安装成功。我们进入/buildroot/output/target/bin目录 file查看busybox是否为可用的MIPS小端序文件 king@king-virtual-machine:~$ cd buildroot/output/target/bin/ king@king-virtual-machine:~/buildroot/output/target/bin$ file busybox busybox: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-, stripped#配置环境变量 为了以后方便使用,我们直接将其中的bin文件夹添加到环境变量中,省得我们日后输入长长的路径了。将路径添加到~/.bashrc文件中,输入vim ~/.bashrc,在该文件最后添加如下环境变量,按照格式:export PATH="$PATH:your path"(即程序的编译库原本是在/buildroot/output/target/bin目录内-以gcc为例MIPS所对应的c语言编译库gcc为/buildroot/output/target/bin目录下的mipsel-linux-gcc而普通Linux下使用gcc编译c语言时,只需要在终端输入gcc,此刻我们配置好环境变量,使得mipsel-linux-gcc也可在所属目录以外的地方调用) #验证测试 使用c语言编写a.c,在终端下使用mipsel-linux-gcc进行编译 编译后生成a.out可执行文件 可见成功生成了小端序的mips文件,至此mips交叉编译环境搭建完毕。此时,我们在配合QEMU-MIPS模拟我们需要进行固件分析的大部分路由器及各种普通板子环境。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |